GtkMenuTracker: fix leak when creating submenus
authorRyan Lortie <desrt@desrt.ca>
Mon, 24 Jun 2013 21:59:02 +0000 (17:59 -0400)
committerRyan Lortie <desrt@desrt.ca>
Mon, 24 Jun 2013 22:05:27 +0000 (18:05 -0400)
gtk/gtkmenutracker.c

index ab369ab02f9d6059d3ec65b32e8400ea5bcff4c8..c9e8459cc8190cb82137a935aabc65176ff37a31 100644 (file)
@@ -473,11 +473,20 @@ gtk_menu_tracker_new_for_item_submenu (GtkMenuTrackerItem       *item,
                                        GtkMenuTrackerRemoveFunc  remove_func,
                                        gpointer                  user_data)
 {
-  return gtk_menu_tracker_new (_gtk_menu_tracker_item_get_observable (item),
-                               _gtk_menu_tracker_item_get_submenu (item),
-                               TRUE,
-                               _gtk_menu_tracker_item_get_submenu_namespace (item),
-                               insert_func, remove_func, user_data);
+  GtkMenuTracker *tracker;
+  GMenuModel *submenu;
+  gchar *namespace;
+
+  submenu = _gtk_menu_tracker_item_get_submenu (item);
+  namespace = _gtk_menu_tracker_item_get_submenu_namespace (item);
+
+  tracker = gtk_menu_tracker_new (_gtk_menu_tracker_item_get_observable (item), submenu,
+                                  TRUE, namespace, insert_func, remove_func, user_data);
+
+  g_object_unref (submenu);
+  g_free (namespace);
+
+  return tracker;
 }
 
 /*< private >